#!/bin/bash

#
# Nombre:      postini.sh
# Autor:       Pablo Martin Viva <pmviva@gmail.com>
# Fecha:       20/04/2011
# Descripcion: Provee la funcionalidad para establecer el ambiente de ejecucion
#              del sistema, validando y estableciendo variables de entorno.
#              Una vez establecido el ambiente de ejecucion arranca el demonio
#              postonio.sh en modo background
#

#
# Modo de uso:
#
# ./postini.sh
#

#
#
#
GRUPODIR_REGEX="(.*/grupo[0-9][0-9])(/.*)*"

#
# Establece la clave de configuracion BINDIR
#
CLAVE_CONFIGURACION_BINDIR="BINDIR"

#
# Establece la clave de configuracion ARRIDIR
#
CLAVE_CONFIGURACION_ARRIDIR="ARRIDIR"

#
# Establece la clave de configuracion LOGDIR
#
CLAVE_CONFIGURACION_LOGDIR="LOGDIR"

#
# Establece la clave de configuracion LOGEXT
#
CLAVE_CONFIGURACION_LOGEXT="LOGEXT"

#
# Establece la clave de configuracion LOGSIZE
#
CLAVE_CONFIGURACION_LOGSIZE="LOGSIZE"

#
# Funcion que chequea el directorio grupo y define la variable de ambiente
#
function chequear_grupo()
{
        local CURRENTDIR=`pwd`
	echo $CURRENTDIR
        if [[ $CURRENTDIR =~ $GRUPODIR_REGEX ]]
        then
                grupo="${BASH_REMATCH[1]}"
                return 0
        else
                return 1;
        fi;
}

chequear_grupo
echo $grupo
#
# Verifica que el ambiente de entorno POSTINI ya fue inicializado
#
if [ -z "$POSTINI_AMBIENTE_INICIALIZADO" -o "no" = "$POSTINI_AMBIENTE_INICIALIZADO" ]
then
	#
	# Obtiene el archivo de configuracion de acuerdo al directorio corriente
	#
	archivoConfiguracion="$grupo/conf/instula.conf"

	#
	# Valida la existencia del archivo de configuracion
	#
	if [ ! -f $archivoConfiguracion ]
	then
		echo "Error#1: Archivo de configuracion no encontrado - $archivoConfiguracion"
		exit 1
	fi

	#
	# Obtiene variable de entorno BINDIR desde archivo de configuracion
	#
	BINDIR=`cat $archivoConfiguracion | grep $CLAVE_CONFIGURACION_BINDIR | cut -d= -f 2`

	#
	# Valida variable de entorno BINDIR
	#
	if [ -z "$BINDIR" ]
	then
		echo "Error#2: Archivo de configuracion incompleto"
		exit 2
	fi

	#
	# Obtiene variable de entorno ARRIDIR desde archivo de configuracion
	#
	ARRIDIR=`cat $archivoConfiguracion | grep $CLAVE_CONFIGURACION_ARRIDIR | cut -d= -f 2`

	#
	# Valida variable de entorno ARRIDIR
	#
	if [ -z "$ARRIDIR" ]
	then
		echo "Error#2: Archivo de configuracion incompleto"
		exit 2
	fi

	#
	# Obtiene variable de entorno LOGDIR desde archivo de configuracion
	#
	LOGDIR=`cat $archivoConfiguracion | grep $CLAVE_CONFIGURACION_LOGDIR | cut -d= -f 2`

	#
	# Valida variable de entorno LOGDIR
	#
	if [ -z "$LOGDIR" ]
	then
		echo "Error#2: Archivo de configuracion incompleto"
		exit 2
	fi

	#
	# Obtiene variable de entorno LOGEXT desde archivo de configuracion
	#
	LOGEXT=`cat $archivoConfiguracion | grep $CLAVE_CONFIGURACION_LOGEXT | cut -d= -f 2`

	#
	# Valida variable de entorno LOGDIR
	#
	if [ -z "$LOGEXT" ]
	then
	        echo "Error#2: Archivo de configuracion incompleto"
	        exit 2
	fi

	#
	# Obtiene variable de entorno LOGSIZE desde archivo de configuracion
	#
	LOGSIZE=`cat $archivoConfiguracion | grep $CLAVE_CONFIGURACION_LOGSIZE | cut -d= -f 2`
	#
	# Transformo LOGSIZE de Kb a Bytes
	#
	LOGSIZE=`echo "$LOGSIZE * 1024" | bc`;
	echo "Logsize en bytes es: $LOGSIZE";

	#
	# Valida variable de entorno LOGSIZE
	#
	if [ -z "$LOGSIZE" ]
	then
	        echo "Error#2: Archivo de configuracion incompleto"
	        exit 2
	fi

	#
	# Agrega BINDIR al PATH de ejecucion
	#
	PATH=$PATH:$BINDIR
	#
	# Establece el entorno como inicializado
	#	
	POSTINI_AMBIENTE_INICIALIZADO="si"
else
	echo "Ambiente POSTINI inicializado, se proceden a listar las variables de entorno del mismo"
	echo " "
	echo " "
	echo "directorioCorriente = $directorioCorriente"
	echo "grupo               = $grupo"
	echo "BINDIR              = $BINDIR"
	echo "ARRIDIR             = $ARRIDIR"
	echo "LOGDIR              = $LOGDIR"
	echo "LOGEXT              = $LOGEXT"
	echo "LOGSIZE             = $LOGSIZE"
	echo " "
	echo " "
fi

#
# Invoca al demonio postonio.sh en modo background
#
. start.sh "postonio.sh"
